#pragma once

#include "Globals.h"

// These are default values. They must be overriden when loading each level
#define GAME_WIDTH	512
#define GAME_HEIGHT 640

namespace game_engine { namespace open_gl 
{

/*!
 * \class GLUtils
 * \brief 
 */
class GLUtils
{
///////////////////////////////////////////////////////////////////////////////
// Method definition
///////////////////////////////////////////////////////////////////////////////
public:
    // Constructors and destructors
    GLUtils(void);
    virtual ~GLUtils(void);

    // Others
    static void mainInit(int argc, char** argv, const string &title,
                                void (*render)(void),
                                void (*readKey)(UCHAR, INT32, INT32),
                                void (*readSpecialKey)(INT32, INT32, INT32),
                                void (*readKeyUp)(UCHAR, INT32, INT32),
                                void (*readSpecialKeyUp)(INT32, INT32, INT32),
                                void (*readMouse)(INT32, INT32, INT32, INT32),
                                void (*loop)(void));
    static void commonLevelInit(void);
    static void levelInit(const FLOAT32 width, const FLOAT32 height);
    static void initializeRendering(void);
    static void finalizeRendering(void);
    static void startEventLoop(void);
    static void repaint(void);

};

}}
